
#include "iostream"
#include "vector"
#include "unordered_map"
#include "unordered_set"
#include "algorithm"
#include "string"
#include "list"
#include "string.h"

struct Stu{
    std::string name;
    int math;
    int zz;
    void print_avg(){
        std::cout<<name<<" "<<(math+zz)/2;
    }
    int score(){
        return math+zz;
    }
    void print_both(){
        std::cout<<name<<" "<<math<<" "<<zz;
    }
};
class Solution{
public:
    bool read_one_stu(
            Stu &s){
        while(1){
            char a=std::cin.get();
            if(a==' '){
                break;
            }
            if(a==EOF){
                return false;
            }
            s.name+=a;
        }
        std::cin>>s.math>>s.zz;

        while(1){
            char a=std::cin.get();
            if(a=='\n'){
                return true;
            }
//            if(a==){
//                return false;
//            }
            s.name+=a;
        }
    }
    std::vector<Stu> stus;
    void sort(){
        for(int i=0;i<stus.size();i++){
            for(int j=0;j<stus.size()-i-1;j++){
                if(stus[j].math<stus[j+1].math){
                    std::swap(stus[j],stus[j+1]);
                }
            }
        }
    }
    void print_avgs(){
        for(auto &s:stus){
            s.print_avg();
            printf("\n");
        }
    }
    void run(){

        bool first= true;
        while(1){
            Stu s;
            bool end=!read_one_stu(s);
            if(end){
                break;
            }
            stus.push_back(s);
            if(end){
                break;
            }
        }

        print_avgs();
        sort();
        stus[0].print_both();
    }
};

int main() {
//    bool cur_num= true;
Solution().run();
    return 0;
}

